home *** CD-ROM | disk | FTP | other *** search
- ppc.library emulation history
- =============================
-
- (kern): changes are relevant for PowerUp kernel emulation only
- (lib): changes are relevant for M68k library only
-
-
- - 0.7e / ppc.library 46.26 (25.05.2000)
- o (lib) Fixed elfloadseg ioerror bug: if LoadSeg was attempted for
- non-existing file it returned ioerr ERROR_OBJECT_WRONG_TYPE, which was
- definetely wrong. Now return ERROR_OBJECT_NOT_FOUND as supposed to.
- o (lib) Fixed a bug from elfloadseg, initialization called FindSemaphore()
- without list arbitration.
- o (lib) Improved elfloadseg not to open ppc.library each time LoadSeg
- is called or ppcsegment is launched. Uses cached ppcbase instead.
- o (lib) Fixed a bug from elfloadseg patch that could have broken AmigaOS
- overlay system (it was pure luck it had worked till now).
- o (lib) Fixed a bug from elfloadseg patch: if the library would have got
- unloaded (flushed from memory) before the segment was run, the program
- would have crashed miserably.
-
- - 0.7d / ppc.library 46.25 (22.02.2000)
- o Now PPCINFOTAG_CPUPLL should finally be correct. I'm no longer
- calculating anything but I'm just taking the PLL code from HID1,
- like original PowerUp does (thanks to Harry Sintonen for pointing
- this out). The PLL code bug in the GetAttr() kernel function is
- also emulated.
-
- - 0.7c / ppc.library 46.24 (11.01.2000)
- o (lib) Ok, mea culpa. There *are* PPC boards with LC040 out, so I can't
- use the FPU on the M68k side. Fixed GetAttrs()/PPCINFOTAG_CPUPLL again.
- o (lib) PPCGetAttrs() will always return a result, not only when
- ti_Data is 0.
-
- - 0.7b / ppc.library 46.23 (07.01.2000)
- o PPCAttrs()/PPCGetAttr() PPCINFOTAG_CPUPLL returns the correct pll code
- now and now longer the calculated pll * 1000000 directly.
- o Fixed crash when starting ELF objects from Workbench.
- o Library needs a working M68k FPU now (no EC040/EC060).
-
- - 0.7a / ppc.library 46.22 (13.12.1999)
- o Problems with launching asynchronous PPC threads from an asynchronous
- PPC task solved (AmigaAmp).
- o Fixed PPCFindTask(), which crashed when a task was not found (Frogger,
- no audio)!
-
- - 0.7 / ppc.library 46.21 (12.12.1999)
- o Source is included in release. Make all years 4-digit.
- o Asynchronous PPC tasks always had an invalid current directory and
- PROGDIR. This was the main reason that for example MAME (and hope-
- fully many others) didn't work. Now the parent PROGDIR will be
- passed to the asynchronous task.
- o (kern) PPCAllocVec/AllocMem() return 32-byte aligned memory again.
- Since V15 the AllocVecPPC function from WarpOS does only guarantee
- 8-byte alignment, because memory is always from a pool, so there
- are no cache line problems - but maybe PowerUp software could get
- annoyed by this fact.
-
- - 0.6g / ppc.library 46.20 (06.12.1999)
- o (kern) PPCLoadObject(), PPCLoadObjectTagList(), PPCUnLoadObject() and
- PPCCreateTask() are supported. Generally they will only call the
- appropriate M68k function, but the kernel version of PPCCreateTask()
- has an additional PC argument, which allows to spawn threads from the
- current task.
- o (kern) PPCprintf() with some limitations. No float or long long
- support. Strings are limited to 1000 chars.
-
- - 0.6f / ppc.library 46.19 (16.05.1999)
- o (kern) PPCAllocPooled() calls PPCAllocVecPooled() and PPCFreePooled()
- call PPCFreeVecPooled(), which saves some space.
-
- - 0.6e / ppc.library 46.18 (14.05.1999)
- o (kern) PowerUp task priority is converted into a WarpOS nice-value,
- by using the simple formula: NICE = -PRI (not nice, but it works ;)
- o (kern) PPCSetTaskAttr() PPCTASKINFOTAG_NAME is illegal.
- o (lib) New function PPCSetTaskAttrs(). Supported tags:
- PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_EXTUSERDATA, PPCTASKINFOTAG_INPUTHANDLE,
- PPCTASKINFOTAG_OUTPUTHANDLE and PPCTASKINFOTAG_ERRORHANDLE.
-
- - 0.6d / ppc.library 46.17 (13.05.1999)
- o MEMF_NOCACHEPPC,MEMF_NOCACHEM68K,MEMF_WRITETHROUGHPPC and
- MEMF_WRITETHROUGHM68K are supported for PPCAllocVec(), PPCAllocMem()
- and PPCCreatePool() (M68k and PPC). Ok... not really supported, but
- emulated by using Chip-RAM. :)
- o PPCGetAttrs(M68k) and PPCGetAttr(PPC) return 0x57415250 ('WARP') for
- PPCINFOTAG_EMULATION (=0x8001f0ff), which allows a program to distinguish
- the emulation library from the original.
- o (lib) PPCCreateTask(): Don't allocate new memory for a second PPC task
- invocation with the same ELF object. Only PROGBITS sections are reloaded
- from disk to ensure data consistency. NOBITS sections are simply cleared.
- o (lib) ELF sections are already loaded and relocated on PPCLoadObject().
- This guarantees that PPCGetObjectAttrs() works as expected before
- PPCCreateTask() was called.
- o (lib) PPCRead/Write/Byte/Word/Long() flush the data cache on PPC side.
- PPCWriteLongFlush() additionally invalidates the PPC instruction cache.
- o (lib) Fix for SAS/C HunkObj-format, which uses the illegal version 0
- in e_ident[EI_VERSION].
- o (kern) New functions: PPCReadByte,PPCReadWord,PPCReadLong,PPCWriteByte,
- PPCWriteWord and PPCWriteLong.
-
- - 0.6c / ppc.library 46.16 (23.04.1999)
- o (lib) Enforcer hit fixed, when library is opened by a program for the
- first time.
-
- - 0.6b / ppc.library 46.15 (18.04.1999)
- o (lib) Alloc/Free functions call the appropriate PPC-functions now,
- by doing a context-switch. This ensures that the memory functions
- on the PPC- and on the 68k-side behave exactly the same.
- o (lib) Support for pooled memory: PPCAllocPooled(),PPCFreePooled(),
- PPCAllocVecPooled(),PPCFreeVecPooled(),PPCCreatePool(),PPCDeletePool().
-
- - 0.6a / ppc.library 46.14 (14.04.1999)
- o (kern) PPCFindTask() returns PowerUp TaskObject instead WarpOS TaskPPC.
- o (kern) PPCSignal() expects PowerUp TaskObject instead WarpOS TaskPPC.
-
- - 0.6 / ppc.library 46.13 (11.04.1999)
- o This version of the emulation library REQUIRES powerpc.library V15!
- o (lib) MPSemaphore protection of library base caused a wrong Lib-OpenCnt,
- which had the effect that the 0.5d library could never be expunged.
- o (kern) The optional PPC MsgPort was not deleted on task exit.
- o (kern) Pooled memory, as introduced by WarpOS V4, is supported. The
- dummy functions are replaced by real ones: PPCAllocPooled(),
- PPCAllocVecPooled(),PPCCreatePool(), PPCDeletePool(),PPCFreePooled(),
- PPCFreeVecPooled().
- o (kern) PPCFindName(), PPCFindNameSync().
- o (kern) Semaphore functions: PPCAttemptSemaphore, PPCAttemptSemaphoreByName,
- PPCAttemptSemaphoreShared, PPCCreateSemaphore, PPCDeleteSemaphore,
- PPCObtainSemaphore, PPCObtainSemaphoreByName, PPCObtainSemaphoreShared,
- PPCReleaseSemaphore.
- o (kern) Cache support: PPCCacheFlush, PPCCacheFlushAll, PPCCacheInvalid.
- o (kern) PPCRawDoFmt().
-
- - 0.5d / ppc.library 46.12 (10.04.1999)
- o The first try of the PowerUp Message System Emulation seems to be working!
- Currently all messages and message ports are allocated in Chip-RAM and
- the performance is some magnitudes behind the original ppc.library,
- but it ran successfully through all tests (e.g. msg2, msg2old, msg3,
- msg5 and msg7 by Ralph Schmidt - the other two have bugs).
- The code is already prepared to run in Fast-RAM, which I might try
- in a future release.
- o (kern) PowerUp Message System supported functions:
- PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(),
- PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(),
- PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage().
- o (lib) PowerUp Message System supported functions:
- PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(),
- PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(),
- PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage().
- o (lib) PPCCreateTask():
- PPCTASKTAG_INPUT/OUTPUT/ERRORHANDLE overrule NP_xxx tags. It was the
- other way around before.
- New PPCCreateTask() tags: PPCTASKTAG_STACKSIZE, STARTUP_MSG,
- STARTUP_MSGDATA, STARTUP_MSGLENGTH, STARTUP_MSGID, MSGPORT.
- o (lib) PPCCreateTask() supports asynchronous PPC tasks.
- o (lib) PPCDeleteTask() - untested.
- o (lib) PPCGetTaskAttrs(). New tags: PPCTASKINFOTAG_TASK, VALUEPTR,
- NAME, PRIORITY, STACKSIZE, INPUTHANDLE, OUTPUTHANDLE, ERRORHANDLE,
- ELFOBJECT, STARTUP_MSG, STARTUP_MSGDATA, STARTUPMSG_LENGTH,
- STARTUP_MSGID, STARTUP_MSGPORT, SIGALLOC, SIGWAIT, SIGRECVD,
- WAITFINISHTASK. The hook and PPC-registers are not supported. Most
- tags are untested.
- o (kern) Startup code for PPC tasks creates a PPCMsgPort on demand (tag
- PPCTASKTAG_MSGPORT). Cleanup code replies the startup message (tag
- PPCTASKTAG_STARTUP_MSG).
- o (kern) PPCGetTaskAttr(). New tags supported: PPCTASKTAG_STARTUP_MSG,
- PPCTASKTAG_STARTUP_MSGDATA, PPCTASKTAG_STARTUP_MSGLENGTH,
- PPCTASKTAG_STARTUP_MSGID and PPCTASKTAG_MSGPORT.
- o (lib) PPCCacheInvalidE() and PPCCacheTrashE(). Fixed some bugs from
- the original ppc.library in these functions.
- o (lib) When debugging mode for the library is enabled, the names of
- still unimplemented 68k-functions will be displayed.
-
- - 0.5c / ppc.library 46.11 (20.03.1999)
- o Removed PPCAlert(), PPCPutMessage() and PSYSCALL_xxx(), which are
- not accessible in the original kernel.
-
- - 0.5b / ppc.library 46.10 (18.02.1999)
- o There has to be one EXTUSERDATA for every task. Programs using
- ixemul.elf still don't work.
- o Increased default stack size used by LoadSeg-patch from 16k to 64k.
-
- - 0.5a / ppc.library 46.9 (26.01.1999)
- o The EXTUSERDATA tag is supported. ixemul.elf based programs have a
- chance to work now.
- o (kern) PPCGetTaskAttr() got new tags: PPCTASKINFOTAG_NAME,
- PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_STACKSIZE, PPCTASKTAG_EXTUSERDATA,
- PPCTASKINFOTAG_USEDSTACKSIZE, PPCTASKINFOTAG_INPUTHANDLE,
- PPCTASKINFOTAG_OUTPUTHANDLE, PPCTASKINFOTAG_ERRORHANDLE and
- PPCTASKINFOTAG_ELFOBJECT.
- o (kern) New function PPCSetTaskAttr(). Supported tags: PPCTASKINFOTAG_NAME,
- PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_EXTUSERDATA,
- PPCTASKINFOTAG_INPUTHANDLE, PPCTASKINFOTAG_OUTPUTHANDLE,
- PPCTASKINFOTAG_ERRORHANDLE.
-
- - 0.5 / ppc.library 46.8 (24.01.1999)
- o Possibility to start ELF objects directly under WarpOS without runelf!
- The emulation library installs its own ELF-LoadSeg patch, which works
- nearly in the same way as with the original library. Only difference:
- The message system is not used. This feature was only for vbcc-
- compatibily anyway, and I know for sure that vbcc no longer needs it. :)
- o (lib) PPCCacheClearE() is supported, because it's used by the LoadSeg-
- patch, for example.
-
- - 0.4c / ppc.library 46.7 (23.01.1999)
- o (kern) Fixed PPCGetAttr(). It was erroneously implemented as
- PPCGetAttrs() in 0.4 and had some bugs anyway. Now PLL is much more
- precise than with the original.
- o (kern) Task support functions: PPCFindTask(), PPCFinishTask() and
- PPCGetTaskAttr(). PPCGetTaskAttr currently only knows about the
- PPCTASKTAG_STACKSIZE tag, others will generate a NULL return value.
- o Common symbols are no longer ignored. Space in the .bss section will
- be assigned for them. This was one of the major reasons for most
- crashes under earlier versions! Unlike vbcc and SAS/C, gcc (or egcs?)
- uses common symbols (since some time?).
- o (kern) PowerUp ELF library support:
- PPCOpenLibrary(), PPCCloseLibrary(), PPCGetLibSymbol().
- o New method of starting PPC tasks. Still synchronous only, but the
- function is already prepared for asynchronous tasks.
- o (lib) More tags supported by PPCCreateTask(): PPCTASKTAG_ERROR,
- PPCTASKTAG_BREAKSIGNAL,PPCTASKTAG_INPUTHANDLE,PPCTASKTAG_OUTPUTHANDLE,
- PPCTASKTAG_ERRRORHANDLE,PPCTASKTAG_NAME,PPCTASKTAG_PRIORITY,
- PPCTASKTAG_ARG5-ARG8, NP_Input,NP_Output,NP_Error,NP_CloseInput,
- NP_CloseOutput,NP_CloseError.
- o (lib) The argument pointer of PPCRunObject() was not recognized!
- o (lib) All memory allocations are done with 32-byte alignment now. There
- were some dangeours 4-byte aligments left in earlier versions.
-
- - 0.4b / ppc.library 46.6 (05.01.1999)
- o A separate PowerPC task ("ppcemu TimerObjSrv") is launched when the
- library is initialized. It will be needed to handle the timer jobs
- and to do PPC task notification. It uses zero cpu-time, when idling.
- o (kern) TimerObjects: PPCCreateTimerObject, PPCDeleteTimerObject,
- PPCGetTimerObject, PPCSetTimerObject.
- o (kern) I/O: PPCInput,PPCOutput.
- o (kern) Signal support: PPCAllocSignal,PPCFreeSignal,PPCSetSignal,
- PPCSignal,PPCWait (PPCSignal might not work, because of different Task
- definitions).
- o (kern) Version: PPCVersion,PPCRevision.
- o (kern) TagItem support: PPCFindTagItem,PPCGetTagData,PPCNextTagItem.
- o (kern) Fixed Add64,Add64p,Sub64,Sub64p (they are still incorrect
- in original ppc.libraray!)
- o (kern) Improved Cmp64,Cmp64p.
-
- - 0.4a / ppc.library 46.5 (19.12.1998)
- o (kern) Fixed PPCNeg64,Neg64p,Sub64,Sub64p,Mulu64,Mulu64p,Muls64,Muls64p.
- o (lib) Private PPCDebugMode function.
-
- - 0.4 / ppc.library 46.4 (27.11.1998)
- o Included the *names* of all kernel functions from ppc.library V46.19.
- As a consequence the library version was bumped to 46.
- o The PowerPC type, cpu clock and bus clock will be determined when
- initializing the library base.
- o PPCGetAttr (without PPCINFOTAG_EXCEPTIONHOOK) for M68k lib and PPC kernel.
- o (lib) PPCCreateTask: r3 and r4 default to zero to avoid startup
- code crashes when checking for args via r3 (PPCLoad-fix).
- o (lib) Read/write data by PowerPC: PPCReadByte,WriteByte,ReadWord,
- WriteWord,ReadLong,WriteLong,WriteLongFlush.
- o (kern) The kernel functions no longer need to init the TOC pointer.
- o (kern) Included additional 64-bit and gcc-support functions of V46.19:
- PPCAnd64,Asl64,Lsl64,Asr64,Lsr64,Or64,Xor64,DivRem64,
- __adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__fixdfdi,
- __fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf,
- __floatunsdidf,__iordi3,__lmulq,__lshldi3,__lshrdi3,__moddi3,
- __muldi3,__negdi2,__qdivrem,__subdi3,__ucmpdi2,__udivdi3,
- __umoddi3,__xordi3, memcpy,strcmp,strcpy
-
- - 0.3 / ppc.library 45.3 (20.11.1998)
- o (kern) List functions: PPCAddHead/Sync, AddTail/Sync, Enqueue/Sync,
- Insert/Sync, NewList, RemHead/Sync, Remove/Sync, RemTail/Sync
- and PPCNextTagItem.
-
- - 0.2 / ppc.library 45.2 (16.11.1998)
- o (kern) 64-bit support functions: PPCAdd64, Add64p, Cmp64, Cmp64p,
- Divs64, Divs64p, Divu64, Divu64p, Mods64, Mods64p, Modu64, Modu64p,
- Muls64, Muls64p, Mulu64, Mulu64p, Neg64, Neg64p, Sub64, Sub64p
-
- - 0.1 / ppc.library 45.1 (15.11.1998)
- o First partially working ppc.library emulation. Synchronous PPC
- tasks, started by runelf, which only use the basic PowerUp kernel
- functions for I/O, memory and context-switch seem to work fine.
- o (lib) Supported 68k functions:
- PPCLoadObject,PPCUnloadObject,PPCRunObject,PPCAllocMem,PPCFreeMem,
- PPCAllocVec,PPCFreeVec,PPCCreateTask(only synchronous),
- PPCGetObjectAttrs,PPCLoadObjectTagList
- o (kern) Supported PowerUp kernel functions:
- PPCAllocMem,PPCAllocPooled(dummy),PPCAllocVec,
- PPCAllocVecPooled(dummy),PPCCallM68k,PPCCallOS,PPCClose,
- PPCCreatePool(dummy),PPCDeletePool(dummy),PPCFreeMem,
- PPCFreePooled(dummy),PPCFreeVec,PPCFreeVecPooled(dummy),
- PPCOpen,PPCRead,PPCSeek,PPCWrite.
- Pooled memory functions currently use the normal Alloc/FreeVec
- functions, because pooled memory support is still missing in WarpOS.
-
- - 0.0 / ppc.library 45.0 (31.10.1998)
- o Started after getting a hint that the last author abondoned his project.
-